#第一题
x1 <- list.files("E:\\class3\\GSE67835",pattern="txt")
x2 <- list.files("E:\\class3\\GSE67835",pattern="csv")

setwd("E:\\class3\\GSE67835")
getwd()  #查看路径
mergedat <- read.table(x2[1])
for(i in 2:138)             #将所有csv文件合并
{
  dat <- read.table(x2[i])
  mergedat <- merge(mergedat,dat,by=1)
}

rownames(mergedat)=mergedat[,1]   #将第一列作为行名
mergedat=mergedat[,-1]            #将第一列删除


for(i in 1:138)             
{
  rown <- substr(x2[i],1,10)   #提取csv文件名中的1~10个字符
  #方法二：strsplit(x2[i],"_")
  #方法三：gsub("_.*","",x2[i])  gsub("(.*)_.*","\\1",x2[i])
  names(mergedat)[i] <- rown   #设置为列名
}

df <- read.table(x1,skip=36,nrows=15)    #跳过前36行,读取15行
df <- df[c(1,9:11),]   #保留第1行和第9-11行
df1 <- t(df)
df1 <- df1[-1,]  #删除第一行
rownames(df1) <- df1[,1]   #第一列转化成行名
df1 <- df1[,-1]   
df2 <- t(mergedat)

result <- merge(df1,df2,by="row.names")
names(result)[2] <- "tissue"
names(result)[3] <- "cell type"
names(result)[4] <- "age"
rownames(result) <- result[,1]   #第一列转化成行名
result <- result[,-1] 

for(j in 1:3)
{
  for (i in 1:138) 
    {
    result[i,j] <- gsub(".*:(.*)","\\1",result[i,j])  #把tissue、celltype、age列的值替换为“：”后面的值
  }
}

library(openxlsx)
write.xlsx(result,file="E:\\class4\\13-刘睿佳-实践4结果.xlsx",row.names=TRUE)

#第二题
library(openxlsx)
data <- read.xlsx("E:\\class3\\13-刘睿佳-结果.xlsx")
rownames(data)=data[,1]   #将第一列作为行名
data=data[,-1]            #将第一列删除
sumR <- apply(data,1,function(x){sum(x==0)})  #计算每行缺失值个数
print(sumR)
sumC <- apply(data,2,function(x){sum(x==0)})  #计算每列缺失值个数
print(sumC)

